package poker;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import cartaPoker.CartaPoker;

public class PokerStatus {

	List<Integer> listaDeValores;
	List<String> listaDePalos;

	public PokerStatus() {
		this.listaDeValores = new ArrayList<Integer>();
		this.listaDePalos = new ArrayList<String>();
	}

	public boolean verificarCoincidencia(CartaPoker primeraCarta,
			CartaPoker segundaCarta, CartaPoker terceraCarta,
			CartaPoker cuartaCarta, CartaPoker quintaCarta, Integer n) {

		this.listaDeValores.add(primeraCarta.valor());
		this.listaDeValores.add(segundaCarta.valor());
		this.listaDeValores.add(terceraCarta.valor());
		this.listaDeValores.add(cuartaCarta.valor());
		this.listaDeValores.add(quintaCarta.valor());

		Boolean result = false;

		for (Integer intElement : this.listaDeValores) {

			result = result
					|| (Collections.frequency(listaDeValores, intElement) == n);
		}

		return result;
	}

	public String verificar(CartaPoker primeraCarta, CartaPoker segundaCarta,
			CartaPoker terceraCarta, CartaPoker cuartaCarta,
			CartaPoker quintaCarta) {

		if (this.verificarColor(primeraCarta, segundaCarta, terceraCarta,
				cuartaCarta, quintaCarta)) {

			return "Color";
		}
		if (this.verificarCoincidencia(primeraCarta, segundaCarta,
				terceraCarta, cuartaCarta, quintaCarta, 4)) {

			return "Poker";
		}
		if (this.verificarCoincidencia(primeraCarta, segundaCarta,
				terceraCarta, cuartaCarta, quintaCarta, 3)) {

			return "Trio";
		}

		return null;

	}

	public boolean verificarColor(CartaPoker primeraCarta,
			CartaPoker segundaCarta, CartaPoker terceraCarta,
			CartaPoker cuartaCarta, CartaPoker quintaCarta) {

		this.listaDePalos.add(primeraCarta.palo());
		this.listaDePalos.add(segundaCarta.palo());
		this.listaDePalos.add(terceraCarta.palo());
		this.listaDePalos.add(cuartaCarta.palo());
		this.listaDePalos.add(quintaCarta.palo());

		return (Collections.frequency(listaDePalos, primeraCarta.palo()) == 5);
	}

}
